/**
 * 自定义公共函数
 */
let myfn = {};
/**
 * 测试函数test1
 * vk.myfn.test1();
 */
myfn.test1 = function(obj = {}) {
	let vk = uni.vk;
	console.log("执行了自定义公共函数test1");
	return obj;
};

/**
 * 通用跳转
 * @param {String|Number} path		路径或者返回页数
 * @param {String} type		类型 navigate 默认 redirect reLaunch switchTab navigateBack
 */
myfn.gotoPage = function(path, type) {
	if (path && type === 'navigate') {
		vk.navigateTo(path);
	}
	else {
		vk.navigateTo(path);
	}
};

/**
 * 校验参数为空
 * 调用示例：
 * pubFun.isEmpty(value);
 * 或
 * vk.myfn.isEmpty(value);
 */
myfn.isEmpty = function isEmpty(value) {
    // 处理 undefined 和 null
    if (value === undefined || value === null) {
        return true;
    }

    // 处理空字符串
    if (value === "") {
        return true;
    }

    // 处理数组和对象
    if (typeof value === 'object') {
        // 处理数组
        if (Array.isArray(value)) {
            return value.length === 0;
        }
        // 处理对象
        else {
            return Object.keys(value).length === 0;
        }
    }

    // 其他类型（数字、布尔值等）视为有值
    return false;
}

/**
 * 校验参数不为空
 * 调用示例：
 * pubFun.isNotEmpty(value);
 * 或
 * vk.myfn.isNotEmpty(value);
 */
myfn.isNotEmpty = function isNotEmpty(value) {
    return !myfn.isEmpty(value);
}

/**
 * 金额校验
 * 调用示例：
 * pubFun.validateAmount(value);
 * 或
 * vk.myfn.validateAmount(value);
 * 
 * 
console.log(validateAmount("123"));       // true
console.log(validateAmount("0"));         // true
console.log(validateAmount("0.99"));      // true
console.log(validateAmount("-123.45"));   // true（如果允许负数）
console.log(validateAmount("0123.45"));   // false（前导零）
console.log(validateAmount("12.345"));    // false（三位小数）
console.log(validateAmount(".99"));       // false（无整数部分）
console.log(validateAmount("123."));      // false（无效小数）
 */
myfn.validateAmount = function validateAmount(amount) {
  // 去除首尾空格
    let trimmed = String(amount).trim();
    trimmed = trimmed.replace("-","")
  
  // 正则表达式规则
  const regex = /^(-?(0|([1-9]\d*)))(\.\d{1,2})?$/;
  
  // 基础格式校验
  if (!regex.test(trimmed)) return false;
  
  // 可选：数值范围校验（例如 0 ~ 1e8）
  const num = parseFloat(trimmed);
  return num >= 0 && num <= 100000000; // 示例范围
}


// 获取当天开始时间的时间戳（00:00:00）
myfn.getTodayStartTimestamp = function getTodayStartTimestamp() {
  const startOfDay = new Date(new Date());
  startOfDay.setHours(0, 0, 0, 0);
  return startOfDay.getTime();
}

// 获取当天结束时间的时间戳（周日 23:59:59）
myfn.getTodayEndTimestamp = function getTodayEndTimestamp() {
  const endOfDay = new Date(new Date());
  endOfDay.setHours(23, 59, 59, 999);
  return endOfDay.getTime();
}


// 获取本周开始时间的时间戳（周一 00:00:00）
myfn.getWeekStartTimestamp = function getWeekStartTimestamp() {
  const date = new Date();
  date.setHours(0, 0, 0, 0);
  // 周一为0，周日为6
  date.setDate(date.getDate() - date.getDay() + (date.getDay() === 0 ? -6 : 1));
  return date.getTime();
}

// 获取本周结束时间的时间戳（周日 23:59:59）
myfn.getWeekEndTimestamp = function getWeekEndTimestamp() {
  const date = new Date(pubFun.getWeekStartTimestamp());
  date.setDate(date.getDate() + 6);
  date.setHours(23, 59, 59, 999);
  return date.getTime();
}

// 获取本月开始时间的时间戳（1号 00:00:00）
myfn.getMonthStartTimestamp = function getMonthStartTimestamp() {
  const date = new Date();
  date.setDate(1);
  date.setHours(0, 0, 0, 0);
  return date.getTime();
}

// 获取本月结束时间的时间戳（最后一天 23:59:59）
myfn.getMonthEndTimestamp = function getMonthEndTimestamp() {
  const date = new Date();
  date.setMonth(date.getMonth() + 1);
  date.setDate(0);
  date.setHours(23, 59, 59, 999);
  return date.getTime();
}

export default myfn;
